技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
7
0
佛心分享-IT 人自學之術
【現在學React還來得及嗎?】30天Takeaway分享
系列 第
7
篇
【Day7】State1
16th鐵人賽
react
haruowang
2024-08-11 11:33:08
421 瀏覽
分享至
Takeaway
State:隨時間而變化,不能藉由現有資料計算出來
決定State放在哪:找到用State的組件們,再找它們的共同父組件
更改區域變數不會觸發渲染
State變數:用來保留資料。如index
State setter函數:更新State變數並觸發渲染。如setIndex
觸發組件渲染的兩種原因:初次渲染、狀態改變
初次渲染其實是:調用createRoot→render組件→在DOM上appendChild。簡寫為觸發 → 渲染 → 提交
appendChild只能接收一個參數;append可以接收多個,還能接收字串
prepend:把節點插到前面的append
常見const [index, setIndex] = useState(0)搭配setIndex(index + 1)
Vue的ref類似useState,而非useRef。後者可以保存不用重渲染的資料。
Vue的onClick會簡寫成@click,全名是v-on:click
Hook只能在組件或自訂Hook的最頂端調用
Hook擺錯位置會被eslint-plugin-react-hooks抓包,顯示錯誤「渲染的Hook比預期還要少」
State具獨立及私有性。渲染同組件時兩次時,可以有不同狀態
兩個State想同步?從子組件移到父組件中
如果組件要重渲染才會需要State,不然事件處理函數有時就夠了
useState也要記得import
Closure:閉包。內部函式可以從外部函式取得變數,也就是事件處理函數及JSX,可以取得外部函式變數和State的原因。
閉包適合緩存,但缺點是外部宣告的變數如果沒用到,會造成記憶體洩漏
留言
追蹤
檢舉
上一篇
【Day6】Events
下一篇
【Day8】State2
系列文
【現在學React還來得及嗎?】30天Takeaway分享
共
30
篇
目錄
RSS系列文
訂閱系列文
4
人訂閱
26
【Day26】R3F 2
27
【Day27】R3F 3
28
【Day28】React Leaflet 1
29
【Day29】React Leaflet 2
30
【Day30】React Leaflet 3
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
407
組
團體組數
13
組
累計文章數
2957
篇
最後報名日
9/15
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
17th鐵人賽
windows
php
c#
windows server
linux
css
react
熱門問題
不知道網路紅隊的要去那加公司
鼎新ERP欄位可修改預設值嗎
更換FW後Public IP service無法使用
Ansible 連線主機的 port 不是 22 遇到的問題
備份映像檔
Outlook 寄件備份消失問題 (已解決)
aws ec2 檢查故障問題
請問有人遇過在lightsail上部屬fastapi失敗的案例?
IIS 管理員 連線功能不見
熱門回答
鼎新ERP欄位可修改預設值嗎
不知道網路紅隊的要去那加公司
Ansible 連線主機的 port 不是 22 遇到的問題
更換FW後Public IP service無法使用
備份映像檔
熱門文章
什麼是 Signal ?
第10天,No-Code 快速上線又省錢 / 原汁排骨湯 台北最好喝的排骨湯(台北萬華)| 30天滷肉飯
序: AI 加速編碼後,你該學什麼?
第11天,LibreOffice 更省錢 / 司機俱樂部 宵夜好選擇(台北松山)| 30天滷肉飯
第12天,即時通訊軟體選擇 / 金峰滷肉飯 台北名店(台北中正)| 30天滷肉飯
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}